package com.example.lambda.reactor;

import reactor.core.publisher.Mono;

import java.util.Optional;

public class MonoTest {
    public static void main(String[] args) {
        //1.empty()：创建一个不包含任何元素，只发布结束消息的序列
        Mono.empty().subscribe(System.out::print);

        //2.just()：可以指定序列中包含的全部元素。创建出来的 Mono序列在发布这些元素之后会自动结束。
        Mono.just("foo").subscribe(System.out::println);

        //3.justOrEmpty()：从一个 Optional 对象或可能为 null 的对象中创建 Mono。只有 Optional 对象中包含值或对象不为 null 时，Mono 序列才产生对应的元素。
        Mono.justOrEmpty(null).subscribe(System.out::println);
        Mono.justOrEmpty("justOrEmpty1").subscribe(System.out::println);
        Mono.justOrEmpty(Optional.of("justOrEmpty2")).subscribe(System.out::println);

        //4.error(Throwable error)：创建一个只包含错误消息的序列。
        Mono.error(new RuntimeException("error")).subscribe(System.out::println, System.err::println);

        //5.never()：创建一个不包含任何消息通知的序列。
        Mono.never().subscribe(System.out::println);
    }
}
